Computing devices can be communicatively linked with a point-to-point communication connection to enable communication between a client device and a host device, for example. A client device might include a portable laptop computer, a tablet PC, a handheld personal digital assistant (PDA), a cellular phone, and other similar devices that can be configured for direct communication with a host device for synchronized file updates and other data manipulation functions.
FIG. 1 illustrates a conventional point-to-point communication system 100 that includes a host computing device 102 and a client device 104 communicatively linked together with a point-to-point serial connection 106. The host device 102 and the client device 104 each include an application layer 108 and 110, respectively. In this example, applications 108 and 110 can each be a synchronization application designed to facilitate data communication between the host device 102 and the client device 104.
Typically, data communication between computing devices is divided into functional layers between a software application layer, such as application layer 108, and a communication link, such as the point-to-point serial connection 106. Each functional layer provides an appropriately formatted data transfer function to an adjacent functional layer while abstracting the adjacent functional layer from the functional implementation details of a particular layer. Data transfer between the functional communication layers is communicated from higher layers to lower layers, and vice-versa, and by convention, an application layer is a higher layer that communicates information down to a lower layer, such as to a hardware connection interface and/or driver. Accordingly, each functional layer manipulates and formats data as it is communicated from one layer to the next, and reverses the data manipulation and formatting for the data when it is communicated in an opposite direction.
Host computing device 102 includes a transport protocol layer 112 that facilitates information communication between application layer 108 and lower functional communication layers. Implementations of the transport protocol layer 112 can include the Transmission Control Protocol/Internet Protocol (TCP/IP) which is the basic communication protocol for the Internet. TCP/IP can also be used as a communications protocol in a private network, such as an intranet or an extranet. TCP/IP is primarily designed for point-to-point communication, in that communication is from one point, such as from host computing device 102, to another point, such as to client device 104. Point-to-point communication is also commonly designated as “PPP”.
The transport protocol layer 112 communicates information to a point-to-point protocol layer 114, which in turn communicates the information to a serial port 116 via a serial port interface 118 and serial port driver 120. The point-to-point protocol layer 114 uses the Internet protocol (IP) and is designed to facilitate information communication between two computing devices via a serial interface. The PPP protocol layer 114 provides the services of a data-link layer and packages TCP/IP packets received from the transport protocol layer 112 and forwards them to the serial port interface 118.
Client device 104 also includes a transport protocol layer 122 that facilitates information communication between application layer 110 and a point-to-point protocol layer 124. The PPP protocol layer 124 communicates the information between the transport protocol layer 122 and a serial port 126 via a serial port interface 130 and serial port driver 132.
The serial port interface 118 and serial port driver 120 at the host computing device 102 support the point-to-point serial connection 106 between serial port 116 at host computing device 102 and serial port 126 at client device 104. The serial connection 106 is one of the most common communication links to implement between two devices. Serial port connections, however, are relatively slow and typically communicate information at a rate of only 115 kilobits per second.
FIG. 2 illustrates a point-to-point communication system 200 that includes a host computing device 202 and a client device 204 communicatively linked with a point-to-point universal serial bus (USB) connection 206. The USB connection 206 is preferable over the serial connection 106 (FIG. 1) because USB supports a data transfer rate of 12 megabits per second which accommodates connecting a wide range of devices to host computing device 202 at a higher data transfer rate.
Host computing device 202 and client device 204 each include an application layer 208 and 210, a transport protocol layer 212 and 214, and a point-to-point protocol layer 216 and 218, respectively. Each of these components are described above with reference to FIG. 1.
Host computing device 202 also includes a virtual serial port driver 220 that communicates information between the point-to-point protocol layer 216 and a USB port 222. The client device 204 also includes a virtual serial port driver 224 that communicates information between the point-to-point protocol layer 218 and a USB port 226. A virtual serial port driver is also commonly known as a USB serial host driver that enables a point-to-point communication link between USB port 222 at host computing device 202 and USB port 226 at client device 204. The virtual serial port driver 220 exposes a standard serial interface in the host computing device 202 to the upper-level application 208 so that the application can communicate data via USB connection 206 as if it were a standard serial port connection.
FIG. 3 illustrates a multipoint data communication system 300 that includes a computing device 302 having multipoint distributed network data communication components. Computing device 302 includes an application layer 304 and a transport protocol layer 306. The transport protocol layer 306 is described above with reference to FIG. 1. The application 304 can be an Internet browser application, for example, that facilitates user interaction with the Internet 308 via a local area network (LAN) 310.
Computing device 302 also includes multipoint network data communication components such as a Network Driver Interface Specification (NDIS) layer 312 and a miniport driver layer 314. The NDIS layer 312 is a network device driver communication protocol layer that specifies how communication protocol layers or programs, such as TCP/IP, and network device drivers communicate with each other. The NDIS layer 312 provides a layer of abstraction for the development of network device drivers. The abstraction includes an application programming interface (API) to functionally identify the services provided by the NDIS layer 312 without requiring that adjacent layers recognize the implementation details for the NDIS layer. This provides a device-independent format for commands and data that are communicated to a network-connected device.
The NDIS layer 312 configures network-connected devices for communication to send and receive network data on behalf of applications executing on computing device 302. The applications, such as application 304, communicate information to the NDIS layer 312 through a transport protocol configured for the type of data exchanged and the underlying network used for transmission of the data, such as via TCP/IP, NetBEUI, NWLINK, or other similar communication protocol layers. The NDIS layer 312 communicates with lower driver layers, such as the bus and/or network interface 316, with NDIS object identifiers (OIDs) to perform network device configuration and data communication management of NDIS data packets.
The NDIS layer 312 supports basic types of network interface card (NIC) drivers which are also referred to as NDIS miniport drivers. The miniport driver layer 314 communicates information with the NDIS layer 312 and communicates with the bus and/or network interface 316 through vendor-specific APIs. The bus and/or network interface 316 is typically bus-specific or network-specific and communicates with network-connected devices through the appropriate bus or network interface. Typically, an NDIS miniport driver is specifically configured for a particular hardware device.
Both the NDIS miniport driver layer 314 and the bus and/or network interface 316 are configured by a manufacturer (OEM) of a network-connected device to communicate via vendor-specific APIs. Thus, the NDIS miniport driver layer 314 conforms to an NDIS layer API to communicate with NDIS layer 312, and the bus and/or network interface 316 conforms to the appropriate bus or network interface to communicate information to a network-connected device, or multiple network-connected devices via the LAN 310.
FIG. 4 illustrates a multipoint data communication system 400 that includes a computing device 402 having multipoint distributed network data communication components. Computing device 402 includes an application layer 404 and a transport protocol layer 406. The transport protocol layer 406 is described above with reference to FIG. 1. Application 404 can be a synchronization application, for example, designed to facilitate data communication between computing device 402 and remote device 408. Application 404 also utilizes remote device 408 to access a LAN 410.
Computing device 402 also includes an NDIS layer 412 and a Remote NDIS miniport driver layer 414. The NDIS layer 412 is described above with reference to FIG. 3. In FIG. 4, the Remote NDIS architecture replaces the NDIS miniport driver layer 314 and the bus and/or network interface 316 of FIG. 3, both of which were provided by a network-connected device manufacturer, with a Remote NDIS miniport driver layer 414 and a bus and/or network-specific microport 416. Each combination of components provides the computing devices 302 and 402 access to a LAN 310 and 410 respectively.
Remote NDIS miniport driver layer 414 and the bus and/or network-specific microport 416 are independent of any particular network-connected device 408 and can be included as part of the computing device 402 operating system similarly to the transport protocol layer 406 and the NDIS protocol layer 412. With Remote NDIS, hardware manufacturers providing remote devices do not have to provide host-based drivers for their devices. Remote NDIS is the subject of U.S. patent application Ser. No. 09/302,735 entitled “Method and System for Abstracting Network Device Drivers”, the disclosure of which is incorporated by reference herein.
Remote NDIS miniport driver layer 414 defines a connection-independent message set along with a description of how the message set operates over a particular connection, such as with a specific bus or network. A Remote NDIS interface is standardized to facilitate a defined set of host drivers to support any number of network-connected devices thereby eliminating the need to install new drivers to support a newly connected network device.
The Remote NDIS miniport driver layer 414 encapsulates NDIS object identifiers (OIDs) and NDIS data packets into data structures known as Remote NDIS messages that can be communicated without modification to a remotely connected device 408. The Remote NDIS miniport driver layer 414 communicates the Remote NDIS messages with the bus and/or network-specific microport driver layer 416 which can include a USB bus microport, a 1394 bus microport, a Bluetooth microport, or any other similar communication protocol microport.
The bus and/or network-specific microport driver layer 416 is an intermediate layer that interfaces with the specific bus or network responsible for communicating the Remote NDIS messages to the remote device 408. The microport driver layer 416 receives Remote NDIS messages and communicates them to a corresponding element of the specific bus or network driver layer. The Remote NDIS messages are communicated via the USB connection to remote device 408.
With the Remote NDIS architecture, the network communication protocol mechanisms are abstracted above the bus and/or network-specific microport driver layer 416. Adding a new network-connected device can be accomplished by changing or modifying only the Remote NDIS miniport driver layer 414. The microport driver layer 416 remains unchanged because it is a message transport layer that passes NDIS layer OIDs and NDIS data packets encapsulated in Remote NDIS messages.